package com.haifeng.questionbankcrud;

import com.haifeng.questionbankcrud.pojo.Teacher;
import com.haifeng.questionbankcrud.pojo.vo.MessageModel;
import com.haifeng.questionbankcrud.services.LoginService;
import com.haifeng.questionbankcrud.services.impl.LoginServiceImpl;
import com.haifeng.questionbankcrud.util.CheckString;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;

import java.net.URL;
import java.util.ResourceBundle;

public class LoginController implements Initializable {

    private HelloApplication helloApplication;
    private SingleChoiceController singleChoiceController;

    public void setSingleChoiceController(SingleChoiceController singleChoiceController) {
        this.singleChoiceController = singleChoiceController;
    }

    public void setHelloApplication(HelloApplication helloApplication) {
        this.helloApplication = helloApplication;
    }

    @FXML
    private TextField username;
    @FXML
    private PasswordField userpsd;

    @FXML
    private Label login_msg;


    MessageModel messageModel = new MessageModel();
    LoginService loginService = new LoginServiceImpl();

    /**
     * 登录按钮操作
     */

    public void onLoginButtonClick() {
        System.out.println("hello");
        /* 验证数据合法性
         把传入的参数封装成对象
         调用services层进行判断
         然后判断消息码
         成功则跳转到欢迎界面，开启增删改查功能
         失败则返回登录界面，重新登录*/

        //获取前台传入的值
        String usernameText = username.getText();
        String userpsdText = userpsd.getText();
        //前台传入值封装成对象
        Teacher t = new Teacher();
        t.setT_name(usernameText);
        t.setPassword(userpsdText);
        messageModel.setObject(t);
        System.out.println(t);
        //做前台传值的数据校验
        if (CheckString.isEmpty(usernameText) || CheckString.isEmpty(userpsdText)) {
            //数据校验失败，显示错误信息
            System.out.println("用户名或密码为空");
            messageModel.setCode(0);
            messageModel.setMsg("用户名和密码不能为空！");
        } else {
            //前台数据校验成功
            // 调用service层进行数据库查询校验

            int i = loginService.teacherLogin(t);
            if (i == 0) {
                //未查询到此用户，
                //显示错误信息，用户名或密码不正确
                // 数据回显
                messageModel.setMsg("用户名或密码不正确");

            } else if (i == 1) {
                //跳转主界面，显示用户信息
                messageModel.setMsg("登录成功！");

                //测试跳转到主界面
                System.out.println("成功！");
                helloApplication.gotoMain();


            }

        }

        login_msg.setText(messageModel.getMsg());

    }


    /**
     * 注册按钮操作
     */
    public void onSignUpButtonClick() {

   /* 验证数据合法性
    把前台传入的数据封装成对象
    调用service层进行写入数据库
    根据返回值弹出窗口
    注册成功or注册失败*/

        System.out.println("hello");
        String usernameText = username.getText();
        String userpsdText = userpsd.getText();
        //前台传入值封装成对象
        Teacher t = new Teacher();
        t.setT_name(usernameText);
        t.setPassword(userpsdText);
        messageModel.setObject(t);
        System.out.println(t);
        //做前台传值的数据校验
        if (CheckString.isEmpty(usernameText) || CheckString.isEmpty(userpsdText)) {
            //数据校验失败，显示错误信息
            System.out.println("用户名或密码为空");
            messageModel.setCode(0);
            messageModel.setMsg("用户名和密码不能为空！");
        } else {
            //前台数据校验成功
            // 调用service层进行数据库查询校验
            int i = loginService.teacherSignUp(t);
            if (i == 0) {

                messageModel.setMsg("注册失败。联系管理员");

            } else if (i == 1) {
                //跳转主界面，显示用户信息
                messageModel.setMsg("注册成功 请登录！");

// TODO: 2021/11/17  跳转主界面
                login_msg.setText(messageModel.getMsg());


            }else {
                messageModel.setMsg("出现错误。请联系管理员！");
            }

        }
    }

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {

    }
}
